Описание
Задает или возвращает значение, представляющее для связи имя
объекта Field внешней таблицы, соответствующего полю в главной таблице
(только в рабочей области Microsoft Jet).
Значение
Задаваемое или возвращаемое значение данного свойства имеет тип
String и содержит имя объекта Field в семействе Fields
соответствующего объекта TableDef.
Если объект Relation еще не
добавлен в объект Database, а объект Field уже добавлен в объект
Relation, то свойство ForeignName доступно для чтения/записи.
После добавления объекта Relation в базу данных свойство
ForeignName становится доступным только для чтения.
Замечания
Свойство ForeignName поддерживается только объектами
Field, принадлежащими к семейству Fields, которое содержится в
объекте Relation.
Значения свойств Name и ForeignName
объекта Field указывают имена связываемых полей в главной и внешней
таблице связи. Значения свойств Table и ForeignTable объекта
Relation задают имена главной и внешней таблицы связи.
Например, если
в поле "КодДетали" таблицы "Детали" содержатся уникальные коды запасных частей,
то можно определить связь с таблицей "Заказы" таким образом, чтобы в таблицу
"Заказы" можно было вводить только значения кодов, уже существующих в таблице
"Детали". В этом случае попытка ввести значение, отсутствующее в таблице
"Детали", приведет к перехватываемой ошибке, если только не задано с помощью
константы dbRelationDontEnforce принудительное выполнение условий
целостности данных с помощью свойства Attributes объекта
Relation.
В этом примере таблица "Детали" является внешней таблицей с
ключом, поэтому значением свойства ForeignTable объекта Relation
должно быть имя таблицы "Детали", а значением свойства Table объекта
Relation должно быть имя таблицы "Заказы". Свойства Name и
ForeignName объекта Field в семействе Fields объекта
Relation должны иметь значение "Код детали".
Описанную выше связь
иллюстрирует следующий рисунок.
Пример
Следующая программа демонстрирует применение свойств Table,
ForeignTable и ForeignName для определения параметров объекта
Relation (связи) между двумя таблицами.
Sub ForeignNameX() Dim dbsNorthwind As Database Dim relLoop As Relation Set dbsNorthwind = OpenDatabase("Борей.mdb") Debug.Print "Связь" Debug.Print " Table - Field" Debug.Print " Главная (сторона 'один') "; Debug.Print ".Table - .Fields(0).Name" Debug.Print " Внешняя (сторона 'многие') "; Debug.Print ".ForeignTable - .Fields(0).ForeignName" ' Отображает семейство Relations базы данных 'Борей', ' значения свойств объекта Relation и содержащихся ' в нем объектов Field. For Each relLoop In dbsNorthwind.Relations With relLoop Debug.Print Debug.Print "Связь " & .Name Debug.Print " Таблица - Поле" Debug.Print " Главная (сторона 'один') "; Debug.Print .Table & " - " & .Fields(0).Name Debug.Print " Внешняя (сторона 'многие') "; Debug.Print .ForeignTable & " - " & .Fields(0).ForeignName End With Next relLoop dbsNorthwind.Close End Sub